#include "seqqueue.h"

/*******************************************************************************
*函数名：
*函数功能：创建空的顺序队列
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void creat_seqqueue(pqueue* Q)
{
	*Q = (pqueue)malloc(sizeof(QUEUE));
	if(*Q == NULL)
	{
		perror("malloc");
		exit(1);
	}
	
	(*Q)->front = size-1;
	(*Q)->rear = size-1;
}

/*******************************************************************************
*函数名：
*函数功能：入队
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void insert_data(pqueue pq,int data)
{
	/*判断队列是否满*/
	if(isfull_seqqueue(pq))
	{
		printf("队列已满，无法入队。\n");
		return;
	}
	
	/*入队*/
	pq->rear = (pq->rear+1)%size;
	pq->data[pq->rear] = data;
}

/*******************************************************************************
*函数名：
*函数功能：出队
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void delete_data(pqueue pq,int* pdata)
{
	/*判断队列是否空*/
	if(isempty_seqqueue(pq))
	{
		printf("队列已空，无法出队。\n");
		return;
	}	
	
	/*出队*/
	pq->front = (pq->front+1)%size;
	*pdata = pq->data[pq->front];
}

/*******************************************************************************
*函数名：
*函数功能：判断队列是否满
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
bool isfull_seqqueue(pqueue pq)
{
	if (pq->front == (pq->rear+1)%size)
		return true;
	else
		return false;
}

/*******************************************************************************
*函数名：
*函数功能：判断队列是否空
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
bool isempty_seqqueue(pqueue pq)
{
	if (pq->front == pq->rear)
		return true;
	else
		return false;
}

/*******************************************************************************
*函数名：
*函数功能：打印顺序队列
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void print_seqqueue(pqueue pq)
{
	int i;
	printf("--------------------------------------------\n");
	printf("队头");
	
	for(i = (pq->front+1)%size; i != (pq->rear+1)%size; i = (i+1)%size)
		printf("-%d",pq->data[i]);
	
	printf("-队尾\n");
	printf("--------------------------------------------\n");		
}

/*******************************************************************************
*函数名：
*函数功能：
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/



/*******************************************************************************
*函数名：
*函数功能：
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
